最近項(xiàng)目上需要用到 LED 子系統(tǒng),在嵌入式 Linux 里面點(diǎn)個(gè)燈還是比較簡單的,只要在某個(gè)燈對應(yīng)的目錄里,向相應(yīng)文件寫入特定值,就可以讓 LED 亮/滅/閃爍。
# echo 1 > /sys/class/leds/green/brightness // 點(diǎn)亮 LED # echo 0 > /sys/class/leds/green/brightness // 熄滅 LED # echo heartbeat > /sys/class/leds/green/trigger // 讓 LED 像心跳一樣閃爍
led trigger 當(dāng)然,項(xiàng)目里用到的點(diǎn)燈功能要比上面介紹的稍微復(fù)雜一點(diǎn),類似于硬盤燈,即對硬盤進(jìn)行讀寫操作時(shí),LED 會閃爍。 隱隱約約感覺到,這個(gè)功能應(yīng)該和 trigger 文件有關(guān)系,因?yàn)樵?cat 這個(gè)文件時(shí),里面有 mmc0 這個(gè)字眼。 那就往 trigger 里面寫個(gè) mmc0 看看會有什么效果呢
# echo mmc0 > /sys/class/leds/green/trigger # cat /sys/class/leds/green/trigger none rc-feedback kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock [mmc0] heartbeat default-on ir-power-click axp20x-usb-online
向磁盤中寫入數(shù)據(jù) # touch aa | sync 1 神奇地發(fā)現(xiàn),每執(zhí)行一次命令向磁盤中寫入數(shù)據(jù),板子上綠色的燈就會閃爍一次,神奇。 通過查閱資料,了解到這是 LED 觸發(fā)器相關(guān)的功能。一時(shí)間,想到
為什么往 tigger 里寫入 mmc0,就能讓 LED 變成硬盤燈?
為什么往 brightness 文件里寫入 1/0,就能控制燈的亮滅?
為什么往 trigger 文件里面寫入 timer,LED 就會閃爍,同時(shí)會產(chǎn)生兩個(gè)文件 delay_on、delay_off,并能用它們控制燈的閃爍頻率?
等等
種種疑惑涌上心頭,急切地想了解這些功能背后的原理
原理